Operadores de atribuição
Procure saber quando uma conversão implícita irá acontecer, quando a conversão explícita é obrigatória e quando poderá haver cortes. Não se esqueça que uma variável de referência não é um objeto e sim uma maneira de se chegar ao objeto.
Operadores de atribuição compostos
Somente os 4 mais utilizados (+=, -+, *= e /=) poderão ser cobrados no exame. Veja alguns exemplos:
z = z-9;// corresponde a z -=9
a = a+1*6;// corresponde a a +=1*6
a *=1+6;
A expressão à direita é colocada entre parênteses. Sendo assim, a avaliação é feita do seguinte modo:
a *=(1+6);
a*=7;
a = a*7;
Analise um exemplo mais elaborado:
package br.devmedia;
public class Executavel {
/**
* @param args
*/
public static void main(String[] args) {
int y = 2;
y *=2+2;
System.out.print(y+" ");
int z = 5;
z /=2+3;
System.out.print(z+" ");
int a = 15;
a %=1+5;
System.out.println(a);
}
}
Saída: 8 1 3
Operadores de comparação
É essencial que você tenha em mente que o exame aborda os seguintes operadores de comparação: </, <=, >, >=, ==, !=. Os operadores de comparação, em todos os casos, resultam em um valor booleano, isso quer dizer, false ou true.
Cada comparação pode envolver 2 números, incluindo o tipo char, duas variáveis de referência ou dois valores booleanos.
boolean b = (11>2)==(1>0);
System.out.println("Value of b:"+b);
Não tem sentido em compararmos tipos incompatíveis como um char com um long. É válido que você compreenda que o código a seguir é válido:
package br.devmedia;
public class Main {
public static void main(String args []){
boolean x;
if(x=true){
System.out.println("true");
}
}
}
A variável x não está sendo comparada com true, mas sim está sendo atribuida como true, então será impresso: “true”.
Enums e igualdade
Após a declaração de um enum, ele não pode ser expandido, ou seja, eles são imutáveis. Em tempo de execução, é impossível criar novas constantes enum.
Podemos usar o método equals() ou o operador == para verificar se duas variáveis se referem a mesma constante enum.
package br.devmedia;
public class EnumIgual {
enum Color{VERDE, AMARELO}
public static void main(String []args){
Color color1 = Color.VERDE;
Color color2 = Color.VERDE;
if(color1==color2){
System.out.println("color1==color2");
}
if(color1.equals(color2)){
System.out.println("color1 equals color2");
}
}
}
Console:
color1==color2
color1 equals color2
instanceOf
O operador instanceOf é utilizado apenas com variáveis de referência e permite saber se um objeto é de um tipo específico.
Sempre é retornado verdadeiro se o objeto comparado (superclasse) puder ser atribuído ao outro (subclasse). Ele também auxilia, protegendo contra uma conversão inválida. Veja abaixo:
package br.devmedia;
interface Empregavel{}
class Funcionario implements Empregavel{}
class Chefe extends Funcionario{}
class Dono extends Chefe{}
public class Principal {
/**
* @param args
*/
public static void main(String[] args) {
Dono dono = new Dono();
System.out.println(dono instanceof Empregavel);
}
}
O programa acima imprime true. É impossível utilizar o operador instanceOf para realizar testes envolvendo 2 hierarquias de classes diferentes.
Operação de concatenação de Strings
A avaliação do operador é feita sempre da esquerda para direita. Se uma String estiver participando da operação, o resultado será uma String.
Decremento/Incremento
- Pré-incremento -> a=++b -> Primeiramente incrementa e depois o valor é utilizado.
- Pós-incremento -> a=b++ -> Primeiramente o valor é utilizado e em seguida é incrementado.
Para a prova, fique atento com perguntas que usem os operadores de decremento e incremento em uma variável final. Já variáveis final não podem ser modificadas, os operadores de incremento/decremento não podem ser utilizados e qualquer tentativa causará um erro de compilação.
Na próxima parte do artigo abordaremos mais operadores e instruções if e switch.
Leia todos artigos da série
- Desmistificando a Certificação SCJP6 - Parte I
- Desmistificando a Certificação SCJP6 - Parte II
- Desmistificando a Certificação SCJP6 - Parte III
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 1
- Desmistificando a Certificação SCJP6 - Parte IV - Parte 2
- Desmistificando a Certificação SCJP6 - Parte V - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte V - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VI - Parte 3/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 1/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 2/3
- Desmistificando a Certificação SCJP6 - Parte VII - Parte 3/3
- Instruções if e switch - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 2
- Iteradores e loops - Desmistificando a Certificação SCJP6 - Parte VIII - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - A
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte VIII - Parte 4 - B
- Tratamento de Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 1
- Definindo Exceções em Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 2
- Assertivas Java: Desmistificando a Certificação SCJP6 - Parte IX - Parte 3
- Mini-Teste: Desmistificando a Certificação SCJP6 - Parte IX - Parte 4
- String: Desmistificando a Certificação SCJP6 - Parte X - Parte 1
- StringBuilder/StringBuffer e File: Desmistificando a Certificação SCJP6 - Parte X - Parte 2
- Combinação de Classes E/S: Desmistificando a Certificação SCJP6 - Parte X - Parte 3
- Utilizando Arquivos e Diretórios: Desmistificando a Certificação SCJP6 - Parte X - Parte 4
- Console e Serialização: Desmistificando a Certificação SCJP6 - Parte X - Parte 5
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 A
- Mini-teste: Desmistificando a Certificação SCJP6 - Parte X - Parte 6 B
- Expressões Regulares: Desmistificando a Certificação SCJP6 Parte XI - Parte 1
- Lista Negada e Metacaracteres: Desmistificando a Certificação SCJP6 Parte XI - Parte 2
- Metacaracteres Âncora e Busca: Desmistificando a Certificação SCJP6 Parte XI - Parte 3